<?php
namespace app\custom_user\model;

use think\Model;

/**
 * 处理手机验证码的模型
 * @property int $status 0,新创建的;1,已经使用过;2,废弃
 * @property int $create_time 创建时间
 * @todo 发送验证码之前废弃同一个用户的验证码
 * @todo 验证成功后将记录修改成已经使用过
 */
class MobileCodeModel extends Model
{
    protected $table="ue_mobile_code";
    public function send($mobile,$type="")
    {
        $rand=rand(1000000,1999999);
        $rand=substr($rand,1);
        $data=[
            "mobile"=>$mobile,
            "type"=>$type,
            "code"=>$rand,
            "create_time"=>time(),
            "status"=>0
        ];
        return $this->create($data);
    }
    public function check($mobile,$code,$type="",$expire=600)
    {
        /** @var self $data */
        $data=$this->db()->where(["mobile"=>$mobile,"type"=>$type,"status"=>0])->order("create_time desc")->find();
        if(!$data){
            $this->error="请先发送验证码";
            return false;
        }
        $current_time=time();
        $create_time=intval($data->create_time);
        if($current_time > $create_time+$expire){
            $this->error="验证码已超时，请重新发送";
            return false;
        }
        if($code!==$data["code"]){
            $this->error="验证码错误";
            return false;
        }
        return $this;
    }
}
